package org.rslai.autotest.core.page;

import java.awt.AWTException;
import java.io.IOException;

import org.openqa.selenium.By;

/**
 * UploadFile处理方法
 * @author rslai
 */
public interface UploadFile {

	/**
	 * 设置上传文件名，适用于html的input
	 * @param by By上传按钮
	 * @param fullFileName 上传文件名（全路径）
	 */
	public void setUploadFileNameForInput(By by, String fullFileName);

	/**
	 * 使用robot输入上传文件名，适用于html的input <br>
	 * 不建议用此方法，请使用 setUploadFileName(By by, String fullFileName)<br>
	 * 此方法需要当前焦点
	 * @param by By上传按钮
	 * @param fullFileName 上传文件名（全路径）
	 */
	@Deprecated
	public void inputUploadFileNameForInputUseRobot(By by, String fullFileName);

	/**
	 * 使用AutoIt输入上传文件名，适用于html的input <br>
	 * 不建议用此方法，请使用 setUploadFileName(By by, String fullFileName)<br>
	 * 此方法需要当前焦点，稳定性好于Robot但在linux不能用
	 * @param by By上传按钮
	 * @param fullFileName 上传文件名（全路径）
	 * @throws IOException
	 * @throws InterruptedException
	 */
	@Deprecated
	public void inputUploadFileNameForInputUseAutoit(By by, String fullFileName) throws IOException, InterruptedException;

	/**
	 * 使用Robot输入上传文件名，适用于Flash上传组件 <br>
	 * 不建议用此方法，稳定性差，请使用 inputUploadFileNameForFlashUseAutoit(By by, String fullFileName)<br>
	 * 此方法需要当前焦点
	 * @param by By上传按钮（一般html标签为 <object >）
	 * @param fullFileName 上传文件名（全路径）
	 */
	public void inputUploadFileNameForFlashUseRobot(By by, String fullFileName);

	/**
	 * 使用AutoIt输入上传文件名，适用于Flash上传组件 <br>
	 * 此方法需要当前焦点，稳定性好于Robot但在linux不能用
	 * @param by By上传按钮（一般html标签为 <object >）
	 * @param fullFileName 上传文件名（全路径）
	 * @throws IOException
	 * @throws InterruptedException
	 */
	public void inputUploadFileNameForFlashUseAutoit(By by, String fullFileName) throws IOException, InterruptedException;

	/**
	 * 使用AutoIt和Robot输入上传文件名，适用于Flash上传组件 <br>
	 * 用于使用inputUploadFileNameForFlashUseAutoit方法无法打开上传文件对话框的情况，此方法会使用robot移动鼠标并click <br>
	 * 此方法需要当前焦点，稳定性好于Robot但在linux不能用
	 * @param by By上传按钮（一般html标签为 <object >）
	 * @param fullFileName 上传文件名（全路径）
	 * @throws AWTException 
	 * @throws IOException
	 * @throws InterruptedException
	 */
	public void inputUploadFileNameForFlashUseAutoitAndRobot(By by, String fullFileName) throws AWTException, IOException, InterruptedException;

}
